//
// Created by Jisam on 2024/7/12.
//
#include <bits/stdc++.h>
// 定义两个配对类型，用于表示坐标或其它需要成对出现的数据
#define PSI pair<string,int>
#define PII pair<int,int>
// 定义长整型的别名
#define i64 long long
// 使用标准库命名空间
using namespace std;

// 定义地图的大小
const int N = 500 + 5;
// 定义答案变量
int ans;
// 定义地图数组和访问数组
int ma[N][N];
int vis[N][N];
// 定义移动方向
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
// 定义地图的行数和列数
int n, m;

/**
 * @brief 广度优先搜索函数
 * @param x 起始点的x坐标
 * @param y 起始点的y坐标
 * 该函数使用广度优先搜索算法来探索地图，将未访问过的且不为障碍物的点标记为已访问
 */
void bfs(int x, int y) {
    queue<PII > q;
    q.push({x, y});
    while (q.size()) {
        // 取出队列头部的元素
        int tx = q.front().first;
        int ty = q.front().second;
        q.pop();
        // 如果当前位置是障碍物，则跳过
        if (ma[tx][ty] == '*') {
            continue;
        }
        // 遍历四个可能的移动方向
        for (int i = 0; i < 4; i++) {
            int fx = tx + dx[i];
            int fy = ty + dy[i];
            // 如果移动后的位置有效，并且是空白区域且未被访问过
            if (fx >= 0 && fy >= 0 && fx < n && fy < m && ma[fx][fy] == 0 && !vis[fx][fy]) {
                // 标记该位置为已访问
                ma[fx][fy] = -1;
                vis[fx][fy] = 1;
                // 将该位置加入队列继续搜索
                q.push({fx, fy});
            }
        }

    }
}

/**
 * @brief 主函数，负责读取输入和调用搜索函数
 */
void solve() {
    // 输入地图的大小
    cin >> n;
    m = n;
    // 读入地图信息
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> ma[i][j];
        }
    }
    // 从边界开始进行搜索
    for (int i = 0; i < n; i++) {
        if (!vis[i][0] && ma[i][0] != 1) bfs(i, 0);
        if (!vis[i][m] && ma[i][m] != 1) bfs(i, m);
    }
    for (int i = 0; i < m; i++) {
        if (!vis[0][i] && ma[0][i] != 1) bfs(0, i);
        if (!vis[n][i] && ma[n][i] != 1) bfs(n, i);
    }
    // 输出处理后的地图
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (ma[i][j] == -1) cout << 0;
            else if (ma[i][j] == 0) cout << 2;
            else cout << ma[i][j];
            cout << " ";
        }
        if (i != n - 1) cout << "\n";
    }

}

// 程序入口
int main() {
    // 关闭同步输入输出，提高效率
    ios::sync_with_stdio(false);
    // 解除cin与cout的绑定
    cin.tie(nullptr);
    // 调用主函数解决问题
    solve();
    // 程序正常结束
    return 0;
}
